import createPersistedState from "vuex-persistedstate";
export default {
  namespaced: true,
  state: {
    cartData: [],
  },
  mutations: {
    //与parduct建立练习将点击的数据添加到carData中
    SET_CART(state, payload) {
        //先检查carData中有没有这个数据
        //没用就添加到cartData
        //手动添加count这个字段
        //有？count +1 
        //js内置函数find
        //查找数组中的某一项值 有就返回当前值 没有就返回undefined
        // state.cartData.push(payload);
        let target = state.cartData.find(item => item.id===payload.id);
      
        //没有的话就
        if(!target){
            //重新定义购物车的数据
            let obj ={
                title:payload.title,
                price:payload.price,
                //插入count
                count:1,
                id:payload.id
            }
            state.cartData.push(obj)
        }else{
            target.count++;
        }
        
    },
  },
  actions: {
    //一个模块是如何操作另一个模块的action
    ADD_CART(context, payload) {
      //声明一个类型
      // console.log("car action",payload)
      context.commit("SET_CART", payload);
      //需要提交另一个store中Mutation
      //通过传入root:true把这个操作转换为rootStore的操作等同this.$store.commit("produt/DECREASE_INVERNTORY",payload.id)
      //从一个模块操作另一个模块
      context.commit("product/DECREASE_INVERNTORY",payload.id,{root:true})
    },
  },
  getters: {
   //总价计算
   total(state){
    return (state.cartData.reduce((total,item)=>{
      return total+=item.price*item.count 
    },0)).toFixed(2);
   }

  },
  //插件
  plugins: [
    createPersistedState({
      //存储的类型 localStorage  sessionStorage
      storage: window.sessionStorage,
      //存储的key
      key: "cartData",
      //储存的state
      //怎么存储user里面的模块？
      //user.userInfo
      paths: ["cartData"],
    }),
  ],
};
